#ifndef _RENZO_ERROR_REPORT_
#define _RENZO_ERROR_REPORT_

#include "RenzoMustHave.h"
#include <exception>
using namespace std;

namespace Renzo {
	

	extern "C" {
	  RENZODERER_API void  rzInfo(const char*, ...);
	  RENZODERER_API void  rzWarning(const char*, ...);
	  RENZODERER_API void  rzError(const char*, ...);
	  RENZODERER_API void  rzSevere(int exitCode, const char*, ...);

		/* rzAssert */
		#ifdef NDEBUG
		#define rzAssert(expr) ((void)0)
		#else
		#define rzAssert(expr) \
		((expr) ? (void)0 : rzSevere(EXIT_ASSERT, "Assertion " #expr " failed in %s, line %d", __FILE__, __LINE__))
		#endif	  
	};

	class RENZODERER_API Exception: public std::exception {
	public: 		
		Exception(const String& msg, ...);
	protected:
		String message;
	};
}

#endif